#pragma once

#include "ScriptCompiler/AST/ASTNode.h"

class CScriptToken;
class CAccessLevelNode;
class CEnumValueNode;

class CEnumNode : public CASTNode
{
public:
    CEnumNode(std::weak_ptr<CScriptFileContext> InFile)
        : CASTNode( InFile,EASTNodeType::Enum)
    {
    }

    std::shared_ptr<CScriptToken> Enum;

    //enum name
    std::shared_ptr<CScriptToken> Name;

    TOptional<std::shared_ptr<CAccessLevelNode>> AccessLevel;
    
    //enum values
    TVector<std::shared_ptr<CEnumValueNode>> Values;

    virtual void DebugPrint(int32_t InDepth) override;

    virtual std::shared_ptr<CScriptToken> GetFirstToken() override { return Enum; }
};